System and method of removing duplicate leads

ABSTRACT

A duplicate lead removal system comprises a matching engine, a vendor duplicates database, and a conflict engine. The matching engine is configured to determine at least one vendor to receive a lead. The vendor duplicates database is configured to store duplicate lead information that is at least partly created by and received from vendors outside of the duplicate lead removal system. The conflict engine is configured to compare information that is at least derived from the lead with information stored in the vendor duplicates database in order to determine if the lead is a duplicate lead for the vendor such that the system can prevent transmission of duplicate leads to the vendor.

RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 11/564,165, entitled SYSTEM AND METHOD OF REMOVING DUPLICATE LEADS, which was filed on Nov. 28, 2006 and is pending. The disclosure of U.S. patent application Ser. No. 11/564,165 is hereby incorporated by reference into this application.

BACKGROUND OF THE INVENTION

1. Field of the Invention

Embodiments of the systems and methods described herein relate to removing duplicate consumer leads.

2. Description of the Related Art

Consumer lead generation is a large and growing industry. The lead generation industry identifies individual or business consumers that may be interested in buying products or services and sells contact information for those consumers to providers of the products or services. For example, a residential loan lead generation company, such as LowerMyBills.com, identifies consumers interested in getting a residential loan and sells the consumers' contact information to lenders of residential loans. The contact information of the potentially interested buyer is known as a “lead.”

Lead generation companies sell leads for many products and services, including residential loans, commercial loans, real estate agents, automobiles, attorneys, housecleaners, and many other products and services. Providers of such products and services buy leads because leads effectively identify consumers that are already interested in the providers' products and services. Accordingly, leads often result in more sales than advertising, cold calling, or other forms of salesmanship.

Because of the effectiveness of leads, some product and service providers periodically buy leads, or generate their own leads, from multiple sources. Unfortunately, such product and service providers may get duplicate leads, thus depriving the providers of the full value of each lead. Duplicate leads also hurt lead generation companies because the companies must generally either refund the purchase price of duplicate leads or discount the price of all leads to account for duplicate leads.

SUMMARY

In this application we describe embodiments of systems and methods that identify and remove duplicate leads before they are provided to a lead buyer. These systems and methods increase the value of each lead. Lead generation companies benefit because they can sell each lead at a higher price. Lead buyers benefit because they receive fewer duplicate leads, thereby reducing the lost value of duplicate leads and the burden of detecting duplicate leads.

One duplicate lead removal system comprises a database of duplicate leads and a conflict engine configured to detect and remove duplicate leads. In this embodiment, the conflict engine compares leads, from whatever source obtained, with information about leads already received that is stored in the duplicate lead database. The system can then provide a group of leads to a vendor that excludes the leads already received. In this fashion, the system reduces the chance that the vendor will receive duplicate leads.

A lead may be a duplicate lead for one vendor but may not be a duplicate lead for another vendor. Accordingly, the duplicate lead database preferably identifies duplicate leads on a vendor-by-vendor basis. In one embodiment, a separate duplicate lead database exists for each vendor. For example, one duplicate lead database may include the leads already received by ABC Mortgage Company and a separate duplicate lead database may include the leads already received by Specialty Financing. Alternatively, the system may use a single duplicate lead database that includes records designating which vendor or vendors have already received a particular lead.

In one variation, the system periodically receives updates to the duplicate lead database. In one advantageous variation, the vendors provide the system with information about the leads that the vendors already have. For example, each vendor may create a duplicate lead file that the system periodically downloads and uses to update the duplicate lead database. Alternatively, vendors may transmit duplicate lead information to the system in real time so that the system can update the duplicate lead database immediately. Alternatively, the vendors may maintain duplicate lead databases that the system may query in real time just prior to transmitting leads to vendors. These methods of updating the duplicate lead database (or of querying vendor-maintained databases) allow each vendor, rather than the system, to define the vendor's set of duplicate leads, advantageously causing the system to exclude duplicate leads generated by the vendor itself or otherwise obtained from a source not affiliated with the system. In contrast, other mechanisms for removing duplicate leads, such as excluding leads that the system previously sent to the vendor, may not detect and remove duplicate leads generated outside of the system.

Optionally, the systems and methods allow each vendor to define the vendor's set of duplicate leads without requiring the vendor to disclose complete consumer contact information associated with each lead. In one embodiment, the duplicate lead database stores only a portion of the contact information of each lead, such as, for example, the lead's zip code and a limited number of positions in the lead's street address. Advantageously, the amount of information stored, while not enough to reveal the full contact information, is preferably enough to determine whether the lead is a duplicate.

Not requiring the vendor to disclose complete consumer contact information is advantageous in at least three ways. First, it requires fewer computational and storage resources because less information must be transmitted and stored. Second, it increases the vendor's trust in the duplicate lead removal system because the system does not receive enough contact information to resell the vendor's leads to another vendor. Third, it reduces or eliminates consumer privacy concerns because the limited amount of information that is transmitted is unlikely to result in the disclosure of sensitive information.

Herein we describe examples or embodiments of systems and methods to remove duplicate leads such that a skilled artisan will understand a few different ways to make and use the invention. However, the invention is not limited to just the described embodiments. Rather, the invention encompasses each disclosed embodiment individually, any combination or subset of the disclosed embodiments, and any variation of the disclosed embodiments that is appreciated by a skilled artisan in light of this disclosure. For example, while we describe many advantageous features and components, a skilled artisan will appreciate, in light of this disclosure, that these features and components are not necessary parts of every embodiment, but can be omitted from or changed in some embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram that illustrates one implementation of a duplicate lead removal system connected to a network.

FIG. 2 is a flowchart that illustrates one process of periodically updating the vendor duplicates database.

FIG. 3 is a simplified vendor lead file that illustrates one format for the data file records and the database records.

FIG. 4 is a flowchart that illustrates one process of removing duplicate leads.

FIG. 5 is a flowchart that illustrates another process of removing duplicate leads.

FIG. 6 is an example that illustrates one way that a conflict engine may remove duplicate leads and other conflicts.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

FIG. 1 is a block diagram that illustrates one implementation of a duplicate lead removal system connected to a network. The duplicate lead removal system 100 of FIG. 1, and the embodiments of other figures, may be implemented in the context of a loan lead generation system such as the system embodied at the web site www.lowermybills.com. We offer this context to illustrate one concrete application of the duplicate lead removal system 100 in order to help a skilled artisan understand how the duplicate lead removal system 100 may be used in practice. The invention, however, is not limited to removing duplicate leads for the lending industry. Rather, a skilled artisan will appreciate, in light of this disclosure, that the systems and methods described herein can be used to remove any kind of duplicate leads, including, without limitation, leads for residential loans, commercial loans, real estate agents, automobiles, attorneys, housecleaners, or any other product or service. The term “vendor” refers broadly to any potential lead buyer, of whatever industry, that offers one or more products or services.

To further illustrate a concrete application of the duplicate lead removal system 100, we describe the duplicate lead removal system 100 in the context of a lead generation system that generates leads using the Internet. An example of such a lead generation system is found on the web site located at www.lowermybills.com. This site prompts a consumer interested in obtaining a loan to enter his own contact information into a web-based form and sends the contact information to a group of matched lenders selected by the consumer.

In one embodiment, components of an Internet-based lead generation system include a matching engine 115, a vendor criteria database 120, a vendor criteria entry component 125, and a web server 130. In general, the lead generation system generates a lead when a consumer 140 accesses the web server 130 over a network 135 such as the Internet. The web server 130 serves web pages that prompt the consumer 140 to enter his contact information into a web-based form. The consumer 140 may also be prompted to enter other information to assist the system to match the consumer 140 with vendors that offer the products or services that the consumer 140 wants.

Generally, the vendor criteria database 120 includes criteria that define characteristics of consumers with whom each vendor wants to be matched. In the context of lending, a lender's criteria may specify that the lender wants to be matched with consumers that have excellent credit and that seek a home purchase loan for more than $300,000. In the context of selling cars, a car dealer's criteria may specify that the dealer wants to be matched with consumers that want to buy a new Honda car with a Manufacturer's Suggested Retail Price of at least $15,000. Generally, the matching engine 115 compares characteristics of the consumer 140 with the vendor criteria database 120 to match the consumer 140 with one or more vendors. In some cases the consumer 140 may not meet any vendor's criteria and the matching engine 115 may not make a match.

Generally, the vendor criteria entry component 125 comprises computer-executable instructions stored on a computer-readable medium that are configured, when executed by a general-purpose computer, to allow a user to update the vendor criteria database 120. Alternatively, the vendor criteria entry component 125 may be implemented as a hardware component, a firmware component, or a component that is some combination of hardware, firmware, and software, that performs the equivalent function. A skilled artisan will understand that hardware, firmware, software, or combination implementations are equivalent, and will understand how to make and use any of these implementations. The term “vendor criteria entry component” encompasses all of these implementations. In one embodiment, the vendor criteria entry component 125 is accessible to a plurality of vendors 145, 150, and 155 over a network 160, such that the vendors 145, 150, and 155 can directly update their own criteria. Alternatively, the vendor criteria entry component 125 is not accessible to the vendors 145, 150, and 155, such that a person or automated process affiliated with the lead generation system must update the vendor criteria database 120. The network 160 may or may not be the same network as the network 135.

Generally, the matching engine 115 comprises computer-executable instructions stored on a computer-readable medium that are configured, when executed by a general-purpose computer, to match the consumer 140 to one or more vendors based on vendor criteria and characteristics of the consumer 140. Alternatively, the matching engine 115 may be implemented as a hardware component, a firmware component, or a component that is some combination of hardware, firmware, and software, that performs the equivalent function. A skilled artisan will understand that hardware, firmware, software, or combination implementations are equivalent, and will understand how to make and use any of these implementations. The term “matching engine” encompasses all of these implementations.

In one embodiment, the matching engine 115 matches the consumer 140 with vendors by comparing characteristics of the consumer 140 with vendor criteria stored in the vendor criteria database 120. The matching engine 115 may require an exact match (e.g. the consumer 140 meets all of a vendor's criteria) or the matching engine 115 may make matches that are close but not exact (e.g. the consumer 140 meets an acceptable level of the vendor's criteria). In some cases the matching engine 115 may match the consumer 140 with only one vendor, while in others the matching engine 115 may match the consumer 140 with multiple vendors. An advantage of matching with just one vendor is that the vendor gets an exclusive lead that likely has more value than a lead that the vendor shares with other vendors. An advantage of matching with multiple vendors is that the vendors may compete with each other to win the consumer's business, which may result in a better price for the consumer. In some cases, the matching engine 115 may not be able to make any matches because the consumer 140 may have characteristics that do not match any vendor's criteria.

The consumer 140 characteristics may be collected in many ways. One way to collect the consumer 140 characteristics is to have the consumer 140 fill out a web-based form served by the web server 130. The consumer 140 may be asked, for example, to provide his contact information and information about his creditworthiness, job, income, interests, and the like. In some cases the consumer 140 may be asked to estimate some of these characteristics rather than provide an exact value. A skilled artisan will appreciate, in light of this disclosure, that the characteristics requested differ on the type of lead that is being generated and the type of information that vendors care about for qualifying a consumer as a potential buyer. Thus, in the context of mortgage loans, creditworthiness is an important characteristic. However, in the context of a product such as a computer that the consumer 140 will likely purchase using cash or a credit card, creditworthiness is less important.

Another way to collect the consumer 140 characteristics is to look up information about the consumer 140 stored in a database. An example of this approach is to request a credit report for the consumer 140 after obtaining the Social Security number from the consumer 140. Still other ways to collect consumer 140 characteristics exist outside of the context of web-based lead generation systems. For example, the consumer 140 can be asked to fill out a paper form or to answer questions during a face-to-face or telephone survey or interview.

A web-based lead generation system, such as the example described above, is a preferred way to collect leads for sending to vendors. However, while we describe embodiments of a duplicate lead removal system 100 in the context of such a web-based lead generation system, the duplicate lead removal system 100 can be used to remove duplicate leads generated in other ways, including leads generated from paper forms or from face-to-face or telephone surveys or interviews. It is advantageous to use a computerized method of generating leads because such leads will already be stored in electronic form and can easily be compared to the vendor duplicates database 110 described herein. However, non-electronic leads can be manually or automatically converted (such as by optical character recognition or the like) into electronic form so that the duplicate lead removal system 100 can be used with them.

The illustrated duplicate lead removal system 100 comprises a conflict engine 105 and a vendor duplicates database 110. The vendor duplicates database 110 comprises information about leads that a vendor has already received. Preferably, the information stored in the vendor duplicates database 110 stores enough information about each lead to determine, to an acceptable degree of accuracy, whether another lead is a duplicate. The acceptable degree of accuracy need not be 100%, and the vendor duplicates database 110 need not store complete contact information for each lead. For example, in one embodiment, the vendor duplicates database 110 stores, for each lead, a zip code and the first eight positions of a street address. This information is sufficient to accurately determine whether a lead has the same address as another lead for almost all addresses in the United States, without requiring the storage of complete contact information for each lead. The zip code plus eight positions of street address format is not required; a skilled artisan will appreciate that many other formats may be used.

The term “database,” as used with respect to the vendor duplicates database 110 and the vendor criteria database 120, encompasses any group of data that stores information about duplicate leads or vendor criteria. These databases need not require Structured Query Language (“SQL”), a relational database management system, or any other query language or database management system, for accessing the information stored therein. Moreover, these databases are not limited to any particular format. Rather, these databases may be simple text files that have an entry on each line or multiple entries on a single line separated by commas, tabs, semicolons, or the like. Alternatively, these databases may comprise all or portions of many computer files stored in one or more directories or folders.

In one embodiment, the conflict engine 105 comprises computer-executable instructions stored on a computer-readable medium that are configured, when executed by a general-purpose computer, to determine whether a lead is a duplicate lead. Alternatively, the conflict engine 105 may be implemented as a hardware component, a firmware component, or a component that is some combination of hardware, firmware, and software, that performs the equivalent function. A skilled artisan will understand that hardware, firmware, software, or combination implementations are equivalent, and will understand how to make and use any of these implementations. The term “conflict engine” encompasses all of these implementations.

An implementation of the conflict engine 105 determines whether a lead is a duplicate lead by extracting from the lead the fields of information stored in the vendor duplicates database 110 and comparing the extracted information with the vendor duplicates database 110 to determine if any record matches the extracted information. For the implementation in which the vendor duplicates database 110 stores a zip code and the first eight positions of a street address for each record, the extracted information is a zip code and the first eight positions of a street address. (The term “record,” as used herein, is not strictly confined to any particular structure and encompasses, for example, an entry in a text file.) If any record matches the extracted information, the lead is deemed to be a duplicate. In one variation, the extracted information must exactly match a record for the lead to be deemed to be a duplicate. In other variations, the match need not be exact but must be within a desired degree of accuracy. Determining matches based on only part of the contact information stored in a lead advantageously increases the accuracy of the matching process. For example, determining matches based just on a zip code and the first eight positions of a street address reduces the chance that typing errors or variations in spelling or punctuation may prevent an otherwise identical address from being deemed a duplicate.

One advantageous variant of the duplicate lead removal system 100 runs the conflict engine 105 in real-time just before sending leads to matched vendors. In this variant, the matching engine 115 matches the consumer 140 with a number of vendors. The conflict engine 105 then compares the lead with the vendor duplicates database 110 to determine if any of the matched vendors already have the lead. The conflict engine 105 excludes the lead as a duplicate lead for any vendor that already has the lead, such that the system 100 can send the lead only to those vendors that do not already have the lead. Real-time duplicate lead removal helps both consumers and vendors. Consumers benefit because they are matched with vendors that do not already have the lead and thus are more likely to contact the consumer. Vendors benefit because they receive leads that are less likely to be duplicates, thus reducing the cost and effort of detecting duplicate leads and the loss of value resulting from duplicate leads.

An advantageous variant of the duplicate lead removal system 100 periodically updates the vendor duplicates database 110 to reflect the leads that each vendor has received within a certain period of time. In one embodiment, the system 100 stores leads in the vendor duplicates database 110 for 60 days. Alternatively, the system 100 may store leads in the vendor duplicates database 110 for 90 days or any other reasonable period. The time period is preferably set to distinguish true duplicate leads from legitimate repeat consumers. A true duplicate lead occurs when a consumer seeks a product or service during a single period but the lead is generated by more than one source. A legitimate repeat consumer is one that completes a transaction, waits for a period, and decides to enter into another transaction. As will be appreciated by a skilled artisan, the “reasonable” period for distinguishing true duplicates from legitimate repeat consumers may differ based on the type of product or service that the consumer seeks.

In various alternative embodiments, a vendor may maintain a vendor duplicates database 158 in addition to or in place of the system's vendor duplicates database 110. In such embodiments, the system 100 may query the vendor's vendor duplicates database 158 in real time at the time that a lead is being generated. If the system 100 determines, based on the query of the vendor's vendor duplicates database 158, that the lead is a duplicate lead, the system 100 does not transmit the lead to that vendor. Advantageously, such an approach ensures that the system 100 accesses the latest duplicate lead information maintained by the vendor without requiring the system 100 to periodically update its own vendor duplicates database 110. Alternatively, the system 100 can maintain a vendor duplicates database 110 that is updated in real time when changes occur in the vendors vendor duplicates database 158. For example, the system's vendor duplicates database 110 and the vendor's vendor duplicates database 158 may be linked together via Open Database Connectivity (“ODBC”) or via any other mechanism for linking databases together. A skilled artisan will appreciate, in light of this disclosure, that there are many mechanisms for linking databases together and that any such mechanism can be used.

We have described embodiments of the system 100 that remove duplicate leads based on vendor duplicates provided by vendors. Alternatively or additionally, the system 100 can remove duplicate leads based on leads that the system 100 has already sent to the vendor. In such an embodiment, the system 100 includes a vendor leads database (not shown) that stores information about the leads that the system 100 has already sent to each vendor. Upon matching a lead to a particular vendor, the system 100 may check the vendor leads database to determine whether the lead has already been sent to that vendor. If the lead has already been sent to that vendor, the system 100 does not transmit the lead to the vendor.

FIG. 2 is a flowchart that illustrates one process of periodically updating the vendor duplicates database 110. A process 200 for periodically updating the vendor duplicates database 110 begins in a block 205 with a vendor loading a daily delta file onto a File Transfer Protocol (“FTP”) site. The daily delta file includes new duplicate leads that the vendor has received since the previous day. The delta files can be updated more or less frequently, such as hourly, every four hours, every two days, weekly, or any other length of time. Further, they need not be stored on an FTP site. Rather, any transmission protocol can be used. In a block 210, the process 200 checks the FTP site. In a decision block 215, the process 200 determines if a data file exists on the FTP site. If a file does not exist, an email is sent in a block 220 to notify the vendor that the file is missing. Notification is not required and, if performed, other forms of notification may be used. If a file exists at the FTP site, the process 200 proceeds, in a block 225 to download the data file.

In a block 230, the process 200 performs an SQL load of each record from the data file. SQL load is not required; any other method for loading data can be used. In a decision block 235, the process 200 determines whether the record's matchkey already exists in the vendor duplicates database 110. As indicated above, in one embodiment a record matchkey comprises a zip code and the first eight positions of a street address. If the record matchkey does not already exist, the record is added to the vendor duplicates database 110. If the record matchkey already exists, the process 200 proceeds to a decision block 245, in which it is determined whether the drop date in the database record is later than the drop date in the data file record. The purpose of the drop date is to make sure that duplicate leads are stored in the vendor duplicates database 110 for a reasonable period of time. Periodically, the system 100 purges any records in the vendor duplicates database 110 whose drop dates have passed. If the database drop date is not later than the data file drop date, the process 200 proceeds, in a block 250, to overwrite the database record with the data file record. If the database drop date is later than the data file drop date, the process 200 keeps the database record (and thus ignores the data file record). In either case, the process 200 proceeds to process the next data file record, beginning at the block 230.

FIG. 3 is a simplified vendor lead file that illustrates one format for the data file records and the database records discussed above. The formats of the data file records and the database records need not be the same, although the records preferably store the same information for easy comparison and determination of duplicates. It is advantageous, but not required, to have the matchkey fields have the same format so that conversion is not required before comparison of the database file records with the database records. As illustrated, a vendor lead file 300 may include a number of entries 305. Each entry 305 may comprise a zip code 310, 8 positions of a street address 315, and a drop date 320. The vendor lead file 300 may be a text file or a file of any other format. The entries 305 may be on separate lines or may be separated by commas, semicolons, tabs, or the like.

FIG. 4 is a flowchart that illustrates one process of removing duplicate leads. A process 400 of removing duplicate leads begins in a block 405, in which the process 400 receives a vendor duplicate file. A skilled artisan will appreciate, in light of this disclosure, that the receipt of a vendor duplicate file may occur substantially before the other steps in the process 400. Indeed, receiving a vendor duplicate file is not necessary in cases where a vendor duplicates database has already been created. In a block 410, the process 400 finds a matching vendor to whom a lead may be sent. In a block 415, the process 400 checks the vendor's duplicates database to determine if the lead is a duplicate lead. In a block 420, the process 400 excludes the matching vendor if the lead is a duplicate lead, such that the lead is not sent to the matching vendor.

FIG. 5 is a flowchart that illustrates another process of removing duplicate leads. A process 500 of removing duplicate leads begins in a block 505, in which the process 500 generates a list of matching vendors to whom a lead may be sent. In a block 510, the process 500 checks one or more vendor duplicates databases to determine if the lead is a duplicate lead for any of the vendors. In a block 515, the process 500 excludes vendors for whom the lead is a duplicate lead, such that the lead is not sent to the excluded vendors. In a block 520, the process 500 optionally receives a consumer selection of some of the non-excluded vendors. In a block 525, the process 500 transmits the lead to the matched and/or selected vendors (who have not been excluded).

Neither the system 100, the process 400, nor the process 500 requires duplicate lead removal for every vendor that receives leads from the system 100. Some vendors may choose not to provide lead duplicate information with which to build or update the vendor duplicates database 110. In addition, vendors are not required to send all of their leads to the system, and some vendors may choose to provide only some of their leads. Advantageously, therefore, the vendor is able to control which leads are part of the duplicate lead removal process. Further, a lead generation company may choose to provide duplicate lead removal only for certain vendors, such as, for example, vendors that buy a large volume of leads from the lead generation company. Accordingly, while it is preferable to perform a duplicate lead removal process for every lead and every vendor, this is not required. Rather, the embodiments described herein can perform the duplicate lead removal process only for some vendors or only for some leads with respect to some vendors.

The process 400 and the process 500, and any other process set forth herein or apparent to a skilled artisan in light of this disclosure, can be embodied in computer-executable instructions stored on a computer-readable medium, such that the processes are performed when the computer-executable instructions are executed by a general purpose computer. Alternatively, the processes may be embodied in hardware components, firmware components, or components that are some combination of hardware, firmware, and software, that perform the equivalent functions. A skilled artisan will understand that hardware, firmware, software, or combination embodiments are equivalent, and will understand how to make and use any of these embodiments.

FIG. 6 is an example that illustrates one way that the conflict engine 105 may remove duplicate leads and other conflicts. As explained above, the conflict engine 105 may detect and remove duplicate leads. In one embodiment of the duplicate lead removal system 100, the detection and removal of duplicate leads is a specific case of a more general process of detecting and removing “conflicts” with particular leads. As used herein, a “conflict” is simply an undesirable circumstance under which a particular vendor should not receive a particular lead. The duplicate lead removal system 100 seeks to avoid conflicts by detecting them and preventing the particular vendor from receiving the particular lead.

A duplicate lead is one example of a conflict because a vendor should not receive leads that it already has. Another example of a conflict is when two vendors who are really a part of the same organization (such as parent and subsidiary companies) are both matched with the same consumer. It is generally undesirable to send a lead to multiple parts of the same organization because this either creates undesirable competition within the organization or gives a false impression to the consumer that more competition exists than actually does. The duplicate lead removal system 100 may seek to avoid other vendor business conflicts as well.

In one embodiment, as illustrated in FIG. 6, the duplicate lead removal system 100 matches the consumer 140 with a number of vendors. In the illustrated example, in the context of the lending industry, the system 100 has matched the consumer 140 with six lenders, including ABC Mortgage Co., ACME Lending, FastLoans.com, XYZ Lending, Kassle Funding Corp., and Specialty Financing. Upon generating the initial list of matched vendors, the system 100 applies conflict rules to exclude vendors that create a conflict. In one embodiment, each conflict rule is applied in sequence to each vendor on the list before the next conflict rule is applied. Alternatively, each vendor is processed in turn (and all conflict checks are run for the vendor) to determine if there is any conflict with that vendor. Processing each vendor in turn has the advantage of allowing the system to end conflict testing early when a desired number of matched vendors are found that have no conflicts. However, the conflict rules can be applied in sequence in a manner that minimizes duplicative computations. For example, the conflict rules can be applied to only a subset of the matched vendors and further testing can be ended if enough matched vendors are left after the conflict testing.

In the illustrated example, the system 100 applies the conflict rules to each of the matched vendors in turn. As shown, the system 100 determines that there is no conflict with the ABC Mortgage Co., so that company is not excluded. The system 100 determines that ACME Lending does have a conflict because the lead is a duplicate lead for ACME Lending. Thus, the system 100 removes ACME Lending from the list. The system 100 determines that there is no conflict with FastLoans.com, and that company remains on the list. The system 100 determines that XYZ Lending has a conflict because XYZ Lending is a subsidiary of ABC Mortgage Co., and the particular conflict rules for those companies require that only one lead be sent to the companies affiliated with ABC Mortgage Co. The system 100 determines that there is no conflict with Kassle Funding Co. and Specialty Financing, and those companies remain on the list. After conflict testing completes, the system 100 has reduced the matched vendor list to four lenders who may receive the lead.

In general, the systems and methods of removing duplicate leads that we have described above are used to prevent vendors from receiving duplicate leads. Additionally, in one embodiment, the duplicate lead removal system 100 may alert a vendor when a duplicate lead occurs. In some cases it may be advantageous for a vendor who has already received a lead for a consumer to know that the consumer has been matched with other vendors. For example, if a consumer has signed up with a phone company but then seeks to be matched with other phone companies a month later, it may be advantageous for the first phone company to know that the consumer may be considering a switch to a different phone company. In such cases, being informed of a duplicate lead may allow the first phone company to make an attempt to keep the consumer from switching to a different phone company.

We have described the foregoing embodiments by way of example and not limitation. A skilled artisan will appreciate, in light of this disclosure, that the invention is not limited to the disclosed embodiments, but encompasses the disclosed embodiments individually, combinations of features of the disclosed embodiments, and variations of the disclosed embodiments that are apparent to a skilled artisan in light of this disclosure. For example, a skilled artisan will appreciate that many of the features described herein can be modified or omitted from certain embodiments without departing from the invention. 

1. A duplicate consumer lead removal system comprising: at least one computer-readable medium configured to store data and computer-executable instructions; computer hardware comprising at least one computer processor in communication with the computer-readable medium and configured to access the data and computer-executable instructions stored in the computer-readable medium and to cause the computer hardware to perform operations defined by the computer-executable instructions; a matching engine comprising a plurality of computer-executable instructions stored in the computer-readable medium and configured, when the instructions are executed by the computer processor, to cause the computer hardware to match a consumer lead with at least one matched vendor that is eligible to receive the lead; a vendor duplicates database stored in the computer-readable medium and configured to store duplicate lead information for each of a plurality of vendors, wherein a duplicate lead is a lead that has already been received by a vendor, wherein the vendor duplicate lead information identifies duplicate leads that have already been received by a first vendor and separately identifies duplicate leads that have already been received by a second vendor, and wherein the duplicate lead information is at least partly received from vendors outside of the duplicate lead removal system; and a conflict engine comprising a plurality of computer-executable instructions stored in the computer-readable medium and configured, when the instructions are executed by the computer processor, to cause the computer hardware to compare information related to the lead with information stored in the vendor duplicates database in order to determine if the lead is a duplicate lead for the matched vendor and to cause the system to not transmit the lead to the matched vendor if the lead is a duplicate lead of the matched vendor and to transmit the lead to the matched vendor and to update the vendor duplicates database to identify the lead as a duplicate lead of the matched vendor if the lead is not a duplicate lead of the matched vendor.
 2. The system of claim 1, wherein the system periodically receives, from vendors outside of the system, vendor duplicate files that comprise information about duplicate leads that the vendors have already received, and wherein the system periodically updates the vendor duplicates database to include the duplicate lead information received from the vendors.
 3. The system of claim 2, wherein the system receives the vendor duplicate files by downloading the vendor duplicate files from an FTP site.
 4. The system of claim 1, wherein at least a portion of the duplicate lead information stored in the vendor duplicates database relates to leads that vendors outside of the system generated or received from a lead generation entity different from the system.
 5. The system of claim 1, wherein the vendor duplicates database stores, for each duplicate lead, incomplete information that is insufficient to contact a consumer, and wherein the incomplete information includes at least a zip code and a portion of a street address for each duplicate lead.
 6. The system of claim 5, wherein the vendor duplicates database stores, for each duplicate lead, incomplete information that is insufficient to contact a consumer, and wherein the incomplete information comprises at least a zip code and at least eight positions of a street address for each duplicate lead.
 7. The system of claim 1, wherein the vendor duplicates database stores enough information to identify duplicate leads to a desired degree of accuracy but not enough information to generate complete leads.
 8. The system of claim 1, wherein the conflict engine is further configured to detect when a lead has been matched to multiple entities that are parts of a common organization and to cause the system to not transmit the lead to more than one of the multiple entities.
 9. The system of claim 8, wherein the conflict engine detects when a lead has been matched to both a parent entity and a subsidiary entity.
 10. A method of removing duplicate consumer leads comprising: accessing computer-executable instructions stored in at least one computer-readable medium; and executing the computer-executable instructions on at least one computer processor, thereby causing computer hardware to perform operations comprising: receiving, from a plurality of vendors, vendor duplicates information that is indicative of leads that each of the plurality of vendors has already received; storing the vendor duplicates information in a vendor duplicates database, wherein the vendor duplicates database maintains information indicative of leads that a first vendor has already received and separately indicative of leads that a second vendor has already received; finding a matching vendor to receive a lead; checking the vendor duplicates database to determine if the lead is a duplicate lead for the matching vendor; excluding the matching vendor from receiving the lead if the lead is a duplicate lead for the vendor; if the lead is not a duplicate lead for the matching vendor, transmitting the lead to the matching vendor and updating the vendor duplicates database to reflect that the matching vendor has received the lead.
 11. The method of claim 10, wherein finding a matching vendor comprises finding a vendor whose criteria for receiving leads matches characteristics of the lead.
 12. The method of claim 10, wherein checking the vendor duplicates database to determine if the lead is a duplicate lead for the vendor comprises comparing information at least derived from the lead with matchkeys stored in the vendor duplicates database, the matchkeys comprising enough information to detect duplicate leads but not enough information to generate a complete lead.
 13. The method of claim 12, wherein the matchkeys comprise at least a zip code and at least a portion of a street address.
 14. A computer-readable medium that stores computer-executable instructions that are configured, when executed by a general purpose computer, to perform the operations of: generating a list of vendors that have criteria for receiving a lead that match, at least in part, characteristics of a lead; checking vendor duplicates information received, at least in part, from a location remote from the computer-readable medium to determine whether the lead is a duplicate lead for any of the matched vendors, wherein the vendor duplicates information identifies duplicate leads of a first vendor and separately identifies duplicate leads of a second vendor; excluding from receiving the lead matched vendors for whom the lead is a duplicate lead and transmitting the lead to matched vendors for whom the lead is not a duplicate lead; and updating the vendor duplicates information to reflect that the lead is a duplicate lead for the matched vendors to whom the lead was transmitted.
 15. The computer-readable medium of claim 14, wherein the computer-executable instructions are further configured, when executed by a general purpose computer, to perform the operations of receiving consumer selection of a subset of the matched vendors that have not been excluded and further restricting transmission of the lead to the matched vendors that have not been excluded and that have been selected by the consumer.
 16. The computer-readable medium of claim 14, wherein the computer-executable instructions are further configured, when executed by a general purpose computer, to perform the operation of periodically updating the vendor duplicates information based at least in part on information provided by vendors located remotely from the computer-readable medium.
 17. The computer-readable medium of claim 16, wherein the operation of periodically updating the vendor duplicates information comprises checking a download site to determine if updated information is loaded on the download site and downloading any updated information loaded on the download site.
 18. The computer-readable medium of claim 17, wherein the download site is an FTP site.
 19. The computer-readable medium of claim 14, wherein the computer-executable instructions are further configured, when executed by a general purpose computer, to perform the operation of detecting at least one conflict with a lead that is not related to the lead being a duplicate lead. 